package com.dreamteam.hackwaterloo.fragments; import java.util.Arrays; import android.app.Activity; import android.app.Dialog; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentManager; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.SeekBar; import android.widget.Spinner; import com.actionbarsherlock.app.SherlockDialogFragment; import com.actionbarsherlock.app.SherlockFragment; import com.dreamteam.carpuwl.R; import com.dreamteam.hackwaterloo.activities.ActivityMain; import com.dreamteam.hackwaterloo.adapters.Feed; import com.dreamteam.hackwaterloo.adapters.Feed.Event; import com.dreamteam.hackwaterloo.adapters.FeedAdapter; import com.dreamteam.hackwaterloo.utils.server.BaseTask.OnPostExecuteListener; import com.dreamteam.hackwaterloo.utils.server.GetEventsTask; import com.nineoldandroids.animation.Animator; import com.nineoldandroids.animation.Animator.AnimatorListener; import com.nineoldandroids.animation.AnimatorSet; import com.nineoldandroids.animation.ObjectAnimator; import com.nineoldandroids.view.ViewHelper; public class FragmentFindARide extends SherlockFragment implements OnClickListener { public static final String FRAGMENT_TAG = FragmentFindARide.class.getSimpleName(); private static final long ANIMATION_DURATION = 400; // Ui Widgets private ProgressBar mProgressBar; private ListView mListView; private FeedAdapter mListAdapter; private Button mFilterButton; private FragmentManager mFragmentManager; @Override public void onAttach(Activity activity) { mFragmentManager = ((ActivityMain) activity).getSupportFragmentManager(); super.onAttach(activity); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView; rootView = inflater.inflate(R.layout.fragment_find_a_ride, container, false); mProgressBar = (ProgressBar) rootView.findViewById(R.id.find_ride_progress_bar); mFilterButton = (Button) rootView.findViewById(R.id.find_ride_button_filter); mListView = (ListView) rootView.findViewById(R.id.find_ride_list_view); mFilterButton.setOnClickListener(this); getEvents(); return rootView; } private void getEvents() { GetEventsTask getEventsTask = new GetEventsTask(); getEventsTask.setOnPostExecuteListener(new OnPostExecuteListener<Feed.Event[]>() { @Override public void onFinish(Event[] events) { if (events != null && events.length > 0) { mListAdapter = new FeedAdapter(getActivity(), Arrays.asList(events)); mListView.setAdapter(mListAdapter); mListAdapter.notifyDataSetChanged(); } crossFade(); } }); getEventsTask.executeParallel(); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.find_ride_button_filter: DialogFilter dialogFilter = (DialogFilter) mFragmentManager.findFragmentByTag(DialogFilter.FRAGMENT_TAG); if (dialogFilter == null) { dialogFilter = new DialogFilter(); } dialogFilter.show(mFragmentManager, DialogFilter.FRAGMENT_TAG); } } public void crossFade() { ViewHelper.setAlpha(mListView, 0f); mListView.setVisibility(View.VISIBLE); AnimatorSet animatorSet = new AnimatorSet(); animatorSet.playTogether(ObjectAnimator.ofFloat(mListView, "alpha", 0f, 1f), ObjectAnimator.ofFloat(mListView, "scaleX", .8f, 1f), ObjectAnimator.ofFloat(mListView, "scaleY", .8f, 1f), ObjectAnimator.ofFloat(mProgressBar, "alpha", 1f, 0f), ObjectAnimator.ofFloat(mProgressBar, "scaleX", 1f, .8f), ObjectAnimator.ofFloat(mProgressBar, "scaleY", 1f, .8f)); animatorSet.addListener(new AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } @Override public void onAnimationEnd(Animator animation) { mProgressBar.setVisibility(View.GONE); } }); animatorSet.start(); } public static class DialogFilter extends SherlockDialogFragment { public static final String FRAGMENT_TAG = DialogFilter.class.getSimpleName(); private Spinner mSpinnerStart; private Spinner mSpinnerEnd; private EditText mEditTextMaxPrice; private SeekBar mSeekBarMinSeats; private String[] mCities; @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Dialog dialog = new Dialog(getActivity()); dialog.requestWindowFeature(STYLE_NO_TITLE); dialog.setContentView(R.layout.dialog_filter); dialog.setCancelable(true); dialog.setTitle(R.string.dialog_filter_title); mSpinnerStart = (Spinner) dialog.findViewById(R.id.dialog_filter_spinner_startpoint); mSpinnerEnd = (Spinner) dialog.findViewById(R.id.dialog_filter_spinner_endpoint); mEditTextMaxPrice = (EditText) dialog .findViewById(R.id.dialog_filter_edittext_max_price); mSeekBarMinSeats = (SeekBar) dialog.findViewById(R.id.dialog_filter_minimum_seats); mCities = getActivity().getResources().getStringArray(R.array.cities); ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, mCities); mSpinnerStart.setAdapter(adapter); return dialog; } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); } }